<?php
/**
 * サイトデータモデル
 */
require_once __DIR__ . '/../Controller.php';

/**
 * サイトデータモデルクラス
 * @author admin
 *
 */
class Models_SiteController extends Models_Controller
{
	/** ハッシュキー：ＩＤ */
	const KEY_ID = 'ID';
	/** ハッシュキー：サイトＵＲＬ */
	const KEY_URL = 'URL';
	/** ハッシュキー：チーム名 */
	const KEY_TEAM_NAME = 'TEAM_NAME';
	/** ハッシュキー：ユーザ名 */
	const KEY_USER_NAME = 'USER_NAME';
	/** ハッシュキー：パスワード  */
	const KEY_USER_PASSWORD = 'USER_PASSWORD';
	/** ハッシュキー：メールアドレス */
	const KEY_MAIL_ADDRESS = 'MAIL_ADDRESS';
	/** ハッシュキー：最終更新日 */
	const KEY_LAST_UPDATE_DATE = 'LAST_UPDATE_DATE';

	/** 値：ＵＲＬプレフィックス */
	const VALUE_PREFIX_URL = 'T';
	/** 値：エラーコード：ＵＲＬは割り当てられていない */
	const VALUE_ERROR_URL_NOT_FOUND = 'E001';
	/** 値：エラーコード：そのユーザは存在しない */
	const VALUE_ERROR_NO_EXISTS_USER = 'E002';
	/** 値：エラーコード：パスワードが一致しない */
	const VALUE_ERROR_NO_MATCH_PASSWORD = 'E003';

	/** エラーコード */
	protected $_errorCode = FALSE;

	/**
	 * データ挿入
	 * @param unknown_type $nameTeam
	 * @param unknown_type $nameUser
	 * @param unknown_type $passWord
	 */
	public function add($nameTeam, $nameUser, $passWord, $mailAddress)
	{
		$ret = 0;
		$arrData=array();
		$id = self::createId();
		//重複ＩＤ抑止
		while ($this->_searchId($id) !== FALSE) {
			$id = self::createId();
		}
		$arrData[self::KEY_ID] = $id;
		$arrData[self::KEY_LAST_UPDATE_DATE] = time();
		$arrData[self::KEY_TEAM_NAME] = $nameTeam;
		$arrData[self::KEY_USER_NAME] = $nameUser;
		$arrData[self::KEY_USER_PASSWORD] = $passWord;
		$arrData[self::KEY_URL] = self::VALUE_PREFIX_URL . $arrData[self::KEY_ID];
		$arrData[self::KEY_MAIL_ADDRESS] = $mailAddress;
		$this->_aryDataSet[] = $arrData;
		return $arrData;
	}

	/**
	 * 更新
	 * @param unknown_type $id
	 * @param unknown_type $arrData
	 */
	public function update($id, $arrData)
	{

	}

	/**
	 * 認証
	 * @param unknown_type $userName ユーザ名
	 * @param unknown_type $passWord パスワード
	 */
	public function auth($userName, $passWord) {
		$bResult = FALSE;
		// 自ＵＲＬに一致するエントリを検索する
		$url = self::getTeamUrlFromUri();
		$aryDataset = $this->searchUrl($url);
		/***
		 * さらにユーザ名とパスワードが一致するエントリを検索する
		 */
		foreach ($aryDataset as $dataSet) {
			// 一致判定
			if (($dataSet[self::KEY_USER_NAME] == $userName)&&($dataSet[self::KEY_USER_PASSWORD] == $passWord)) {
				return TRUE;
			}
		}
		return FALSE;
	}

	/**
	 * 割り当てＵＲＬを検索する
	 * @param unknown_type $url
	 * @return multitype:unknown
	 */
	public function searchUrl($url)
	{
		$aryResult = array();
		/*** 検索 */
		foreach($this->_aryDataSet as $dataSet) {
			// 一致判定
			if ($dataSet[self::KEY_URL] == $url) {
				$aryResult[] = $dataSet;
			}
		}
		return $aryResult;
	}

	/**
	 * リクエストＵＲＩからチーム割り当てＵＲＬパスを返す
	 */
	static public function getTeamUrlFromUri()
	{
		$aryDivide = explode('?', $_SERVER['REQUEST_URI']);
		$uri = $aryDivide[0];
		$aryDivide = explode('/', $uri);
		$uri = $aryDivide[0];
		return $uri;
	}
}